// 1、引入axios
import axios from 'axios'
import NproGress from 'nprogress'
import { message } from 'antd'
import 'nprogress/nprogress.css'
// 2、设置请求超时的时间
const http = axios.create({
  timeout: 30000,
  baseURL: 'https://bjwz.bwie.com',
  // https://bjwz.bwie.com/wipi/api/article/recommend
  // 设置最大次数
  retry: 3,
  // 设置重新请求等待时间
  retryDelay: 1000
})
// 3、设置公共的前缀
// axios.defaults.baseURL = 'https://bjbw.bwie.com'
// 4、设置请求延时
// axios.defaults.timeout = 30000
// 添加请求拦截器
axios.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    NproGress.start()
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    NproGress.done()
    return response.data
  },
  (error) => {
    // 对响应错误做点什么  此处处理
    if (error.code === 'ECONNABORT') {
      console.log('连接失败，超时')
    }
    // 对不同错误的响应处理
    const status = error.response.status
    switch (status) {
      case 400:
        message.error('错误请求')
        break
      case 401:
        message.error('未授权，请重新登录')
        break
      case 403:
        message.error('拒绝访问')
        break
      case 404:
        message.error('请求错误,未找到该资源')
        break
      case 500:
        message.error('服务端出错')
        break
      case 501:
        message.error('服务器无法识别请求方法')
        break
    }
    // if (status === 400) {
    //   console.log('错误请求')
    // } else if (status === 401) {
    //   console.log('未授权，请重新登录')
    // } else if (status === 403) {
    //   console.log('拒绝访问')
    // } else if (status === 404) {
    //   console.log('请求错误,未找到该资源')
    // } else if (status === 500) {
    //   console.log('服务端出错')
    // } else if (status === 501) {
    //   console.log('服务器无法识别请求方法')
    // }
    return Promise.reject(error)
  }
)

export default http
